package edu.csl.study.scala.basic.demo

import scala.util.Random

/**
 *  两种方法实现Scala中的main方法
 *  （1）object中定义main方法
 *  （2）继承App Trait（特质==）可以不用写main方法：其本质是调用了Trait这个特质中的main方法
 *
 */
object matchDemo extends App {
       //匹配数组
       var  arr=Array(1,3,5)
       arr match{
              case Array(1,x,y) =>println(x+"---"+y)
              case Array(1,_*)  =>println("1...")
              case Array(0)     =>println("only 0")
              case _            =>println("something else")
       }
       //匹配集合
       val list=List(0,3,6)
       list match {
              case 0::Nil        => println("only 0")
              case 0::tail       => println("0....")
              case x::y::z::Nil  => println(s"x:$x y:$y z:$z")
              case _             => println("something else")
       }
       //匹配元组
       val tuple=(1,3,5)
       tuple match{
              case (1,x,y)    => println(s"1,$x,$y")
              case (2,x,y)    => println(s"$x,$y")
              case _          => println("others...")
       }

       //匹配类型

       //定义一个数组
       val  arr2=Array("hello",1,-2.0)

       //随机获取数组中的元素
       val value2=arr2(Random.nextInt(arr2.length))
       println(value2)


       value2 match {
              case x:Int                => println("Int=>"+x)
              case y:Double if(y>=0)    => println("Double=>"+y)
              case z:String             => println("String=>"+z)
              case _                    => println("not match exception")
       }
       //匹配字符串
       //定义一个数组
       val arr3=Array("hadoop","zookeeper","spark","storm")
       //随机取数组中的一位，使用Random.nextInt
       val name2 = arr3(Random.nextInt(arr3.length))
       println(name2)

       name2 match {
              case "hadoop"     => println("大数据分布式存储和计算框架...")
              case "zookeeper"  => println("大数据分布式协调服务框架...")
              case "spark"      => println("大数据分布式内存计算框架...")
              //表示以上情况都不满足才会走最后一个
              case _            => println("我不认识你")
       }

}
